﻿@model PcaCore.BOL.Pca.oOficina

@{
    var X = Html.X();
}

@(
 X.GridPanel()
        .Title("Lista de oficinas")
        .Flex(1)
        .Store(
            X.StoreForModel()
                .AutoLoad(false)
                .ID("storeOficinas")
                .Parameters(p =>
                {
                    p.Add(new StoreParameter() { Name = "empresaId", Value = "App.empresaId.getValue()", Mode = ParameterMode.Raw });
                })
                .Proxy(
                    X.AjaxProxy()
                        .Url(Url.Action("GetListOficinas", "Oficinas"))
                        .Reader(X.JsonReader().RootProperty("data"))
                )
                .RemoteSort(false)
                .PageSize(20)
        )
        .DirectEvents(de =>
        {
            de.ItemDblClick.Url = Url.Action("RunCommandGrid", "Oficinas");
            de.ItemDblClick.ExtraParams.Add(new Parameter { Name = "commandName", Value = "cmdEditar", Mode = ParameterMode.Value });
            de.ItemDblClick.ExtraParams.Add(new Parameter { Name = "oficinaId", Value = "record.data.oficina_id", Mode = ParameterMode.Raw });
            de.ItemDblClick.ExtraParams.Add(new Parameter { Name = "empresaId", Value = "record.data.empresa_id", Mode = ParameterMode.Raw });
            de.ItemDblClick.Before = "Ext.getBody().mask('Cargando...!', 'x-mask-loading');";
            de.ItemDblClick.Complete = "Ext.getBody().unmask();";
            de.ItemDblClick.Failure = "PcaGlobal.showError(result.msg);";
        })
        .ColumnModel(
            X.Column().DataIndex(Model, m => m.oficina_id).Text("ID").Width(70),
            X.Column().DataIndex(Model, m => m.nombre).Text("Nombre").Flex(1),
            X.Column().DataIndex(Model, m => m.direccion).Text("Direccion").Flex(1),
            X.Column().DataIndex(Model, m => m.telefono).Text("Telefono").Flex(1),
            X.CheckColumn().DataIndex(Model, m => m.activo).Text("Activo?").Width(70),
            X.CommandColumn().Hideable(false).Text("Operaciones").Align(Alignment.Center)
                .Commands(
                    X.GridCommand().CommandName("cmdEditar").ToolTip(t => t.Text = "Editar oficina").Icon(Icon.ApplicationEdit),
                    X.GridCommand().CommandName("cmdEliminar").ToolTip(t => t.Text = "Eliminar oficina").Icon(Icon.ApplicationDelete)
                )
                .DirectEvents(de =>
                {
                    de.Command.Url = Url.Action("RunCommandGrid", "Oficinas");
                    de.Command.ExtraParams.Add(new Parameter { Name = "commandName", Value = "command", Mode = ParameterMode.Raw });
                    de.Command.ExtraParams.Add(new Parameter { Name = "oficinaId", Value = "record.data.oficina_id", Mode = ParameterMode.Raw });
                    de.Command.ExtraParams.Add(new Parameter { Name = "empresaId", Value = "record.data.empresa_id", Mode = ParameterMode.Raw });
                    de.Command.Before = "Ext.getBody().mask('Cargando...!', 'x-mask-loading');";
                    de.Command.Complete = "Ext.getBody().unmask();";
                    de.Command.Failure = "PcaGlobal.showError(result.msg);";
                })
       )
       .TopBar(
            X.Toolbar()
                .Items(
                    X.Button()
                        .ID("btnNuevo")
                        .Text("Nuevo oficina")
                        .Disabled(true)
                        .Icon(Icon.Add)
                        .DirectEvents(de =>
                        {
                            de.Click.Url = Url.Action("FrmRegistrar", "Oficinas");
                            de.Click.ExtraParams.Add(new Parameter { Name = "empresaId", Value = "App.empresaId.getValue()", Mode = ParameterMode.Raw });
                            de.Click.Before = "Ext.getBody().mask('Cargando...!', 'x-mask-loading');";
                            de.Click.Complete = "Ext.getBody().unmask();";
                        }),
                    X.ToolbarSeparator(),
                    X.ComboBox()
                        .ID("empresaId")
                        .FieldLabel("Empresa")
                        .MarginSpec("0 0 0 7")
                        .LabelWidth(60)
                        .Width(400)
                        .QueryMode(DataLoadMode.Remote)
                        .ForceSelection(true)
                        .DisplayField("nombre")
                        .ValueField("empresa_id")
                        .EmptyText("Seleccione empresa...")
                        .PageSize(10)
                        .MinChars(0)
                        .TriggerAction(TriggerAction.Query)
                        .ListConfig(
                            Html.X().BoundList()
                                .LoadingText("Buscando...")
                                .ItemTpl(
                                    Html.X().XTemplate()
                                        .Html(@<text>
                                            <div class="search-item">
							                <h3><span>{codigo}</span>{nombre}</h3>
							                Direccion: {direccion}
						                    </div>
                                            </text>)
                                )
                        )
                        .Store(
                            X.StoreFor(typeof(PcaCore.BOL.Pca.oEmpresa))
                                .AutoLoad(false)
                                .Proxy(
                                    X.AjaxProxy()
                                        .Url(Url.Action("GetAllEmpresas", "Empresas"))
                                        .Reader(X.JsonReader().RootProperty("data"))
                                )
                        )
                        .Listeners(l => {
                            l.Select.Handler = "App.storeOficinas.load();App.btnNuevo.setDisabled(false);";
                        })
                )
       )
       .BottomBar(
            X.PagingToolbar()
                .DisplayInfo(true)
                .DisplayMsg("Mostrando oficinas {0}-{1} de {2}")
                .EmptyMsg("No existen oficinas")
       )
)

